#定义信号
#定义槽函数  3.连接信号与槽函数 4.发射信号
from PyQt5.QtCore import QObject ,pyqtSignal
class CustSignal(QObject):
    #不带参数的信号
    signal1=pyqtSignal()
    signal2=pyqtSignal(int)
    signal3=pyqtSignal(int,str)
    signal4=pyqtSignal(list)
    signal5=pyqtSignal(dict)
    signal6=pyqtSignal([int,str],[str])#多重载版本的信号

    def __init__(self,parent=None):
        super(CustSignal,self).__init__(parent)
        self.signal1.connect(self.signalCall1)
        self.signal2.connect(self.signalCall2)
        self.signal3.connect(self.signalCall3)
        self.signal4.connect(self.signalCall4)
        self.signal5.connect(self.signalCall5)
        self.signal6[int,str].connect(self.signalCall6)
        self.signal6[str].connect(self.signalCall6load)
        #反射信号
        self.signal1.emit()
        self.signal2.emit(1)
        self.signal3.emit(2,"text")
        self.signal4.emit([1,2,3,4])
        self.signal5.emit({"name":"zs","sex":"男"})
        self.signal6[int,str].emit(1,'text')
        self.signal6[str].emit("text")
    #编写槽函数
    def signalCall1(self):
        print("s 1")
    def signalCall2(self,val):
        print("s 2",val)
    def signalCall3(self,val,text):
        print("s 3",val,text)
    def signalCall4(self,val):
        print("s 4",val)
    def signalCall5(self,val):
        print("s 5",val)
    def signalCall6(self,val,text):
        print("s 6",val,text)
    def signalCall6load(self,val):
        print("s 6",val)

if __name__ == '__main__':
    cal=CustSignal()





